#include "widget.h"
#include "ui_widget.h"
#include "speech.h"

#include <qdebug.h>
#include <qmessagebox.h>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->btnInput->setText("按住说话");
    m_audio = new Audio(this);
    m_port = new Serial();
    m_port->hide();

    connect(m_port, &Serial::showSpeechWidget, [=](){
        this->show();
        m_port->hide();
    });
}

Widget::~Widget()
{
    delete ui;
    m_port->closePort();
    delete m_port;
}


void Widget::on_btnInput_pressed()
{
    ui->btnInput->setText("松开识别");
    // 开始录音
    m_audio->startAudio("tempSpeech.cpm");
}

void Widget::on_btnInput_released()
{
    // 停止录音
    m_audio->stopAudio();
    // 修改按钮文字
    ui->btnInput->setText("开始识别");
    // 开始识别
    Speech speech;
    QString text = speech.speechIndetify("tempSpeech.cpm");
    ui->textEdit->setText(text);
    ui->btnInput->setText("按住说话");

    if (!m_port->openPort()) {
        QMessageBox::critical(this, "警告", "串口打开失败，请检查串口设置");
        return;
    }
    if (text.contains("开")) {
        // 当语音中有 开 关键字时，发送开灯命令
        m_port->sendData(QString("1"));
    } else if (text.contains("关")){
        // 当语音中有 关 关键字时，发送关灯命令
        m_port->sendData(QString("0"));
    }


}

void Widget::on_btnCancel_clicked()
{
    ui->textEdit->clear();
}

void Widget::on_btnSerialSet_clicked()
{
    this->hide();
    m_port->show();
}
